Systems and methods are present in one or more currently shipping operating systems that provide for the secure execution of software components. Exploits within these software components and attacks on them represent very large security risks in individual systems, specifically, and in larger networked systems. Though the system as a whole is protected from attack, the interoperability with weaker software components can create an insecure system.
Present methods utilizing Virtual Technology (VT) stop at ensuring the runtime integrity of software programs and data at a modular level. Integrity of the binary files is taken care of at individual software levels. In other words, these methods verify the integrity of software like islands, and do not consider the interaction points between silos of code. For example, using VT integrity services we can ensure that integrity verified agent gets called into at certain entry points however, there is no check to ensure that the entity that calls into this protected code is itself verified. The performance issue that remains open is that current methods do not take into account the frequency of interaction between components to optimize the integrity protections to reduce the cost of the interaction. In our VT Integrity services approach today, each transition from unprotected to protected code costs a transition into the VMM (Virtual Machine Monitor)) which adds a significant delay to the operation being performed. The interaction between software components does not remain static on a platform. In order for such a dynamic platform to remain trusted, there needs to be an adaptive method to verify the integrity of software encountered on the platform.